package core

import (
	"blog_go/config"
	"blog_go/global"
	"github.com/spf13/viper"
	"gopkg.in/yaml.v2"
	"log"
	"os"
)

//const configFile = "settings.yaml"

const (
	baseConfigFile = "base_config"
	configFile     = "config-"
)

// 读取yaml文件的配置
func InitConf() {
	//c := &config.Conf{}
	//yamlConf, err := ioutil.ReadFile(configFile)
	//if err != nil {
	//	panic(fmt.Errorf("get yamlFile err#%s ", err))
	//}
	//err = yaml.Unmarshal(yamlConf, c)
	//if err != nil {
	//	log.Fatalf("yaml Unmarshal err#%s ", err)
	//}
	//log.Println("config yamlFile load init success")
	//fmt.Println(c)
	//// 赋值给全局
	//global.Conf = c

	conf := &config.Conf{}
	viper.SetConfigName(baseConfigFile)
	// 第一个搜索路径
	viper.AddConfigPath("./")
	err := viper.ReadInConfig()
	if err != nil {
		log.Fatalf("读取配置文件错误#%s ", err)
	}
	err = viper.Unmarshal(conf)
	if err != nil {
		log.Fatalf("unmarshal to Conf failed#%s ", err)
	}
	// 读取第二个配置
	v2 := viper.New()
	v2.SetConfigName(configFile + conf.Mode)
	v2.AddConfigPath("./")
	err = v2.ReadInConfig()
	if err != nil {
		log.Fatalf("读取配置文件错误#%s", err)
	}
	err = v2.Unmarshal(conf)
	if err != nil {
		log.Fatalf("unmarshal to Conf failed#%s ", err)
	}
	global.Conf = conf
}

// 修改yaml配置
func SetYaml() error {
	yamlConf, err := yaml.Marshal(global.Conf)
	if err != nil {
		return err
	}
	err = os.WriteFile(configFile, yamlConf, os.ModePerm)
	if err != nil {
		return err
	}
	log.Println("修改yaml成功")
	return nil
}
